package com.song.tools.export.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.song.tools.export.api.request.ExportTaskSaveRequest;
import com.song.tools.export.api.request.ExportTaskUpdateRequest;
import com.song.tools.export.core.ExportTask;

/**
 * 导出任务api服务
 *
 * @author song tools
 * @since 2024-07-05
 */
public interface ExportTaskService extends IService<ExportTask> {

    /**
     * 保存导出任务的方法。
     * <p>
     * 该方法接收一个ExportTaskSaveRequest对象作为参数，该对象包含了需要保存的导出任务的相关信息。
     * 方法将对这些信息进行处理，并将处理结果以Long类型返回，通常这个结果是新创建的导出任务的ID。
     *
     * @param request 包含导出任务保存信息的请求对象。
     * @return 返回处理结果，通常是新创建的导出任务的ID。
     */
    Long saveExportTask(ExportTaskSaveRequest request);

    /**
     * 更新导出任务的状态或配置。
     * <p>
     * 本函数接收一个导出任务更新请求对象，通过该对象提供的信息来更新相应的导出任务。
     * 主要用于在导出任务进行中或完成后，根据用户需求或系统策略对任务进行状态调整或配置修改。
     *
     * @param request 导出任务更新请求对象，包含需要更新的任务ID及相关更新信息。
     * @return 更新后的导出任务状态描述字符串。返回的字符串具体格式和内容依赖于系统的具体实现和业务需求。
     */
    Long updateExportTask(ExportTaskUpdateRequest request);
}
